#pragma once

#include "Vector3D.h"

class CRay
{
public:
	CRay(const CVector3D& vOrigin, const CVector3D& vDir);
	virtual ~CRay(void);

	void Set(const CVector3D& vOrigin, const CVector3D& vDir);

	const CVector3D& GetOrigin() const { return m_vOrigin; }
	const CVector3D& GetDir() const { return m_vDir; }
	const CVector3D& GetInvDir() const { return m_vInvDir; }

	CVector3D Evaluate(DATA_TYPE t) const;

protected:
	CVector3D m_vOrigin;
	CVector3D m_vDir;

	CVector3D m_vInvDir;
};

